package com.qfmy.service.novel;

import com.qfmy.vo.novel.NovelVo;

import java.util.List;

/**
 * @author 清风明月
 * @Package com.qfmy.service.novel
 * @date 2025/6/6
 * @description 小说
 */
@SuppressWarnings("all")
public interface NovelService {

    /**
     * 获取热门小说
     * @return
     */
    List<NovelVo> getHotNovels();

    /**
     * 根据分类获取热门小说
     * @param name
     * @return
     */
    List<NovelVo> getHotNovelsByType(String name);

    /**
     * 获取排行榜数据
     * @return
     */
    List<NovelVo> getRankNovels();

    /**
     * 获取免费小说
     * @return
     */
    List<NovelVo> getFreeNovels();

    /**
     * 获取用户喜欢的小说
     * @return
     */
    List<NovelVo> getUserLikeNovels(Integer pageNum, Integer size);

    /**
     * 获取最新小说
     * @return
     */
    List<NovelVo> getNewestNovels();

    /**
     * 获取排行榜数据
     *
     * @param tag
     * @param pageNum
     * @param size
     * @return
     */
    List<NovelVo> getRankNovelsByPage(String tag, Integer pageNum, Integer size);

    /**
     * 根据分类获取小说
     *
     * @param type
     * @param pageNum
     * @param size
     * @param sort
     * @return
     */
    List<NovelVo> getNovelsByType(String type, Integer pageNum, Integer size, Integer sort);

    /**
     * 获取综合评分最新的小说
     * @return
     */
    List<NovelVo> getNewRankNovels();

    /**
     * 获取潜力新书
     * @return
     */
    List<NovelVo> getPotentialNewBook();

    /**
     * 获取新书发布
     * @return
     */
    List<NovelVo> getNewBookReleases();

    /**
     * 获取所有的小说
     */
    void indexBooks();

    /**
     * 搜索小说
     * @param keyword
     * @return
     */
    List<NovelVo> searchBook(String keyword);

    /**
     * 获取获取热搜索数据
     * @return
     */
    List<NovelVo> getHotSearch(Integer pageNum, Integer size);

    /**
     * 更新搜索次数
     * @param novelId
     */
    void updateSearch(Long novelId);

    /**
     * 更新阅读次数
     * @param novelId
     */
    void updateViewCount(Long novelId);

    /**
     * 根据ID获取小说信息
     * @param novelId
     * @return
     */
    NovelVo getNovelById(Long novelId);
}
